class Solution {
public:
//     BST的后序序列的合法序列是，对于一个序列S，最后一个元素是x （也就是根），如果去掉最后一个元素的序列为T，那么T满足：T可以分成两段，前一段（左子树）小于x，后一段（右子树）大于x，且这两段（子树）都是合法的后序序列。完美的递归定义 : ) 。
    // [l,r]闭区间
    bool Judge(vector<int>& v, int l, int r) {
        if(l>=r) return true;
        int val = v[r];
        int i = r-1;
        while(i>=l && v[i]>val) i--;
        for(int j = i;j>=l;j--) if(v[j]>val) return false;
        return Judge(v, l, i) && Judge(v, i+1, r-1);
    }
    bool VerifySquenceOfBST(vector<int> sequence) {
        if(sequence.empty()) {return false;}
        return Judge(sequence, 0, sequence.size()-1);
    }
};